类和对象

1. 概述

在面向对象编程(OOP)中,类和对象是两个核心概念。类是对象的蓝图或模板,而对象是类的实例。通过类,我们可以定义对象的属性和行为。Ruby 是一种纯面向对象的语言,几乎所有的东西都是对象,包括数字、字符串和数组。

2. 类的定义

在 Ruby 中,类通过 class 关键字来定义。类的名称通常以大写字母开头。

示例代码

class Dog
  # 类的定义
end

解释

  • class 关键字用于定义一个类。
  • Dog 是类的名称,遵循驼峰命名法。
  • end 关键字表示类的定义结束。

3. 对象的创建

对象是类的实例。我们可以通过 new 方法来创建类的实例。

示例代码

my_dog = Dog.new

解释

  • Dog.new 创建了一个 Dog 类的实例。
  • my_dog 是这个实例的引用。

4. 属性和方法

类可以包含属性和方法。属性是对象的状态,而方法是对象的行为。

4.1 属性

属性通常通过实例变量来表示,实例变量以 @ 开头。

示例代码

class Dog
  def initialize(name)
    @name = name
  end
end

解释

  • initialize 是类的构造方法,在创建对象时自动调用。
  • @name 是一个实例变量,表示狗的名字。

4.2 方法

方法定义了对象的行为。方法通过 def 关键字来定义。

示例代码

class Dog
  def initialize(name)
    @name = name
  end

  def bark
    puts "#{@name} says: Woof!"
  end
end

解释

  • bark 是一个方法,表示狗的叫声。
  • puts 用于输出信息到控制台。

5. 访问属性和方法

在 Ruby 中,实例变量默认是私有的,不能直接访问。我们可以通过方法来访问和修改实例变量。

5.1 访问方法

访问方法通常命名为 getter 方法。

示例代码

class Dog
  def initialize(name)
    @name = name
  end

  def name
    @name
  end

  def bark
    puts "#{@name} says: Woof!"
  end
end

解释

  • name 方法返回 @name 实例变量的值。

5.2 修改方法

修改方法通常命名为 setter 方法。

示例代码

class Dog
  def initialize(name)
    @name = name
  end

  def name
    @name
  end

  def name=(new_name)
    @name = new_name
  end

  def bark
    puts "#{@name} says: Woof!"
  end
end

解释

  • name= 方法用于修改 @name 实例变量的值。

6. 实践练习

练习 1: 创建一个 Car 类

  1. 定义一个 Car 类。
  2. 添加一个 initialize 方法,接受 make 和 model 作为参数,并将它们存储在实例变量中。
  3. 添加一个 start 方法,输出 "The car is starting."。
  4. 添加 make 和 model 的 getter 和 setter 方法。

练习 2: 创建一个 Book 类

  1. 定义一个 Book 类。
  2. 添加一个 initialize 方法,接受 title 和 author 作为参数,并将它们存储在实例变量中。
  3. 添加一个 display 方法,输出书的标题和作者。
  4. 添加 title 和 author 的 getter 和 setter 方法。

7. 总结

通过本教程,我们学习了如何在 Ruby 中定义类和创建对象。我们了解了如何定义属性和方法,并通过 getter 和 setter 方法来访问和修改实例变量。类和对象是 Ruby 面向对象编程的基础,掌握这些概念对于进一步学习 Ruby 编程至关重要。

8. 下一步

接下来,我们将学习 Ruby 中的继承和模块,这将帮助我们更好地组织和重用代码。